<?

/*! Situação final na série permitidas no sistema
/*!
    Esta classe representa as situações finais na série permitidas no sistema.
*/
class Situacao
{
    //! Consulta todos as situações finais cadastradas
    /*!
        Pega todos as situações cadastradas no banco.
        \return Lista de objetos
    */
    function consultarTodos()
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);

        $resultado = $con->query("Select cod_situacao, dsc_situacao, if(tem_progressao=1,'Sim','Não') tem_progressao from situacao");

        while ($linha = $resultado->fetchRow(DB_FETCHMODE_OBJECT)) {
            array_push($registros, $linha);
        }
        return $registros;
    }

    //! Consulta com base em criterios
    /*!
        Efetua uma consulta por situacao com base em alguns critérios.
        \param $descricao  descriçao da situaçao a ser pesquisada
        \param $progressao se a situacao representa progressao
        \return Lista de objetos
    */
    function consultar($descricao,$progressao)
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);
        $sql = "";

 
        if ($situacao != "")
            $sql .= " dsc_situacao like = '%" . $descricao. "%' and";
        if ($etapas != "")
            $sql .= " tem_progressao = " . $progressao. " and";
            
        if ($sql != "")
            $sql = substr(" where " . $sql, 0, -3);

        $sql = "select cod_situacao, dsc_situacao, if(tem_progressao=1,'Sim','Não') tem_progressao from situacao" . $sql;

        $resultado = $con->query($sql);

        while ($linha = $resultado->fetchRow(DB_FETCHMODE_OBJECT)) {
            array_push($registros, $linha);
        }
        return $registros;
    }

    //! Consulta uma situacao especifica
    /*!
        Pega do banco a situacao com o codigo dado.
        \param $codigo Codigo da situacao
        \return Lista de objetos
    */
    function consultarUnico($codigo)
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);
        $sql = "select cod_situacao, dsc_situacao, if(tem_progressao=1,'Sim','Não') tem_progressao from situacao where cod_situacao= " . $codigo . " ";

        $resultado = $con->query($sql);

        return $resultado->fetchRow(DB_FETCHMODE_OBJECT);
    }

    //! Cadastra uma nova situacao
    /*!
        Cadastra uma nova situacao no banco.
        \param $descrico	Descricao da situacao
        \param $progressao	Se a situacao representa progressao de serie do aluno
        
        \return Boolean
    */
    function incluir($descricao, $progressao)
    {
        // verifica se o dado progressao está preenchido
        if ($progressao != 1) {
         $progressao = 0;
        }
        
        $con = DB::connect(URL_CONEXAO);
        $sql = "insert into situacao (dsc_situacao, tem_progressao) " .
            " values ('$descricao', $progressao)";

        $flag = $con->query($sql);

        if (DB::isError($flag)) {
            return false;
        }
        return true;
    }

    //! Exclui uma situacao do banco
    /*!
        Elimina uma situacao do banco em definitivo
        \param $codigo Codigo da situacao
        \return Boolean
    */
    function excluir($codigo)
    {
        $con = DB::connect(URL_CONEXAO);
        $sql = "delete from situacao where cod_situacao = " . $codigo. " ";

        $flag = $con->query($sql);

        if (DB::isError($flag)) {
            return false;
        }
        return true;
    }

    //! Altera uma situacao
    /*!
        Atualiza uma situacao no banco com novos valores
        \param $descricao 	Descricao da situacao final na serie
        \param $progressao	Se a situacao representa progressao de serie do aluno
        \return Boolean
    */
    function alterar($codigo, $descricao, $progressao)
    {
        $con = DB::connect(URL_CONEXAO);
        $sql = "Update situacao set dsc_situacao = '$descricao' ,tem_progressao = $progressao " ;

        $sql .= " where cod_situacao = " . $codigo. " ";
        
        $resultado = $con->query($sql);

        if (DB::isError($flag)) {
            return false;
        }
        return true;
    }

}

?>
